home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 045 (1988-02-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 045 (1988-02-15)(Ossowski, Stefan)(DE)(PD).adf / Iff2Pcs / Source / pzargs.c < prev    next >
C/C++ Source or Header  |  1988-01-20  |  1KB  |  43 lines

  1. #include "pz.h"
  2.  
  3. /* IFF2PCS input argument parsing from CLI or Workbench.
  4. ** This code should also put up a requester if no argument is specified...
  5. ** But doesn't yet.
  6. ** Ali Ozer, Nov 1987
  7. */
  8.  
  9. /* If called from CLI, argc > 0 and *argv contains program name and arguments.
  10. ** If called from WB, argc == 0 and msg points to the arguments.
  11. ** Note that ParseFile returns an AmigaDOS file handle as opposed to a C
  12. ** file handle. ParseFile will either NOT return or return NULL if something
  13. ** goes wrong.
  14. */
  15. struct FileHandle *ParseArgs (argc, argv, msg)
  16. int argc;    
  17. char **argv;
  18. struct WBStartup *msg;
  19. {
  20.   struct WBArg *arg;
  21.   struct FileHandle *fp = NULL;
  22.  
  23.   if (argc != 0) { /* Running from the CLI */
  24.     if (argc != 2) Panic ("Usage: IFF2PCS ifffilename");
  25.     else fp = Open (argv[1], MODE_OLDFILE);
  26.  
  27.   } else {     /* Else a WB argument... */
  28.  
  29.     if ((msg == NULL) || 
  30.         (msg->sm_NumArgs < 2) ||
  31.         ((arg = (msg->sm_ArgList)+1) == NULL))
  32.             Panic ("You need to specify a file (See IFF2PCS.DOC)");
  33.     else {
  34.       struct Lock *olddir = CurrentDir (arg->wa_Lock);
  35.       fp = Open (arg->wa_Name, MODE_OLDFILE);
  36.       if (olddir) CurrentDir (olddir);
  37.     }
  38.   }
  39.  
  40.   return (fp);
  41. }
  42.  
  43.